package com.terrace.db.system.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.terrace.db.system.mapper.entity.Organization;
import com.terrace.db.system.mapper.entity.Role;
import com.terrace.db.system.mapper.entity.User;
import com.terrace.core.common.model.UserInfo;

public interface UserDao {
	
	public int saveUserSelective(User user);

	public int deleteUserById(String userId);

	public int updateUserSelectiveById(User user);
	
	public User selectUserById(String userId);

	public User selectUserByAccount(String userAccount);
	
	public UserInfo selectUserInfoByAccount(String userAccount);
	
	/**
	 * 用户信息分页查询
	 * @param user
	 * @return
	 */
	public List<User> selectUserForPagination(User user);
	
	/**
	 * 角色下的用户信息分页查询
	 * @param user
	 * @param role
	 * @return
	 */
	public List<User> selectUsersInRoleForPagination(@Param("user") User user, @Param("role") Role role);
	
	/**
	 * 在角色下不存在的用户列表分页查询
	 * @param roleId
	 * @param user
	 * @return
	 */
	public List<User> selectNonExistUsersInRoleForPagination(@Param("roleId") String roleId, @Param("user") User user);

	/**
	 * 组织下的用户信息分页查询
	 * @param user
	 * @param org
	 * @return
	 */
	public List<User> selectUsersInOrgForPagination(@Param("user") User user, @Param("org") Organization org);
	
	/**
	 * 未指定组织的用户信息分页查询
	 * @param user
	 * @return
	 */
	public List<User> selectUsersNotInOrgForPagination(User user);
	
}